﻿/*
 Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add('paste', function (c) {
    function k(a) {
        var b = new CKEDITOR.dom.document(a.document),
            g = b.getBody(),
            d = b.getById('cke_actscrpt');
        d && d.remove();
        g.setAttribute('contenteditable', !0);
        g.on(e.mainPasteEvent, function (a) {
            a = e.initPasteDataTransfer(a);
            f ? a != f && (f = e.initPasteDataTransfer()) : (f = a);
        });
        if (CKEDITOR.env.ie && 8 > CKEDITOR.env.version)
            b.getWindow().on('blur', function () {
                b.$.selection.empty();
            });
        b.on(
            'keydown',
            function (a) {
                a = a.data;
                var b;
                switch (a.getKeystroke()) {
                    case 27:
                        this.hide();
                        b = 1;
                        break;
                    case 9:
                    case CKEDITOR.SHIFT + 9:
                        this.changeFocus(1), (b = 1);
                }
                b && a.preventDefault();
            },
            this
        );
        c.fire('ariaWidget', new CKEDITOR.dom.element(a.frameElement));
        b.getWindow().getFrame().removeCustomData('pendingFocus') && g.focus();
    }
    var h = c.lang.clipboard,
        e = CKEDITOR.plugins.clipboard,
        f;
    c.on(
        'pasteDialogCommit',
        function (a) {
            a.data &&
                c.fire('paste', {
                    type: 'auto',
                    dataValue: a.data.dataValue,
                    method: 'paste',
                    dataTransfer: a.data.dataTransfer || e.initPasteDataTransfer(),
                });
        },
        null,
        null,
        1e3
    );
    return {
        title: h.paste,
        minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350,
        minHeight: CKEDITOR.env.quirks ? 250 : 245,
        onShow: function () {
            this.parts.dialog.$.offsetHeight;
            this.setupContent();
            this._.committed = !1;
        },
        onLoad: function () {
            (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) &&
                'rtl' == c.lang.dir &&
                this.parts.contents.setStyle('overflow', 'hidden');
        },
        onOk: function () {
            this.commitContent();
        },
        contents: [
            {
                id: 'general',
                label: c.lang.common.generalTab,
                elements: [
                    {
                        type: 'html',
                        id: 'pasteMsg',
                        html: '\x3cdiv style\x3d"white-space:normal;width:340px"\x3e' + h.pasteMsg + '\x3c/div\x3e',
                    },
                    {
                        type: 'html',
                        id: 'editing_area',
                        style: 'width:100%;height:100%',
                        html: '',
                        focus: function () {
                            var a = this.getInputElement(),
                                b = a.getFrameDocument().getBody();
                            !b || b.isReadOnly() ? a.setCustomData('pendingFocus', 1) : b.focus();
                        },
                        setup: function () {
                            var a = this.getDialog(),
                                b =
                                    '\x3chtml dir\x3d"' +
                                    c.config.contentsLangDirection +
                                    '" lang\x3d"' +
                                    (c.config.contentsLanguage || c.langCode) +
                                    '"\x3e\x3chead\x3e\x3cstyle\x3ebody{margin:3px;height:95%;word-break:break-all;}\x3c/style\x3e\x3c/head\x3e\x3cbody\x3e\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"\x3ewindow.parent.CKEDITOR.tools.callFunction(' +
                                    CKEDITOR.tools.addFunction(k, a) +
                                    ',this);\x3c/script\x3e\x3c/body\x3e\x3c/html\x3e',
                                g = CKEDITOR.env.air
                                    ? 'javascript:void(0)'
                                    : CKEDITOR.env.ie && !CKEDITOR.env.edge
                                    ? 'javascript:void((function(){' +
                                      encodeURIComponent(
                                          'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();'
                                      ) +
                                      '})())"'
                                    : '',
                                d = CKEDITOR.dom.element.createFromHtml(
                                    '\x3ciframe class\x3d"cke_pasteframe" frameborder\x3d"0"  allowTransparency\x3d"true" src\x3d"' +
                                        g +
                                        '" aria-label\x3d"' +
                                        h.pasteArea +
                                        '" aria-describedby\x3d"' +
                                        a.getContentElement('general', 'pasteMsg').domId +
                                        '"\x3e\x3c/iframe\x3e'
                                );
                            f = null;
                            d.on(
                                'load',
                                function (a) {
                                    a.removeListener();
                                    a = d.getFrameDocument();
                                    a.write(b);
                                    c.focusManager.add(a.getBody());
                                    CKEDITOR.env.air && k.call(this, a.getWindow().$);
                                },
                                a
                            );
                            d.setCustomData('dialog', a);
                            a = this.getElement();
                            a.setHtml('');
                            a.append(d);
                            if (CKEDITOR.env.ie && !CKEDITOR.env.edge) {
                                var e = CKEDITOR.dom.element.createFromHtml(
                                    '\x3cspan tabindex\x3d"-1" style\x3d"position:absolute" role\x3d"presentation"\x3e\x3c/span\x3e'
                                );
                                e.on('focus', function () {
                                    setTimeout(function () {
                                        d.$.contentWindow.focus();
                                    });
                                });
                                a.append(e);
                                this.focus = function () {
                                    e.focus();
                                    this.fire('focus');
                                };
                            }
                            this.getInputElement = function () {
                                return d;
                            };
                            CKEDITOR.env.ie &&
                                (a.setStyle('display', 'block'), a.setStyle('height', d.$.offsetHeight + 2 + 'px'));
                        },
                        commit: function () {
                            var a = this.getDialog().getParentEditor(),
                                b = this.getInputElement().getFrameDocument().getBody(),
                                c = b.getBogus();
                            c && c.remove();
                            b = b.getHtml();
                            this.getDialog()._.committed = !0;
                            a.fire('pasteDialogCommit', { dataValue: b, dataTransfer: f || e.initPasteDataTransfer() });
                        },
                    },
                ],
            },
        ],
    };
});
